[#648] Add tests for WebRequestConcern

Vitor Baptista преди 10 години
родител
ревизия
90b1e50477
променени са 1 файла, в които са добавени 75 реда и са изтрити 0 реда
  1. 75 0
      spec/concerns/web_request_concern_spec.rb

+ 75 - 0
spec/concerns/web_request_concern_spec.rb

@@ -0,0 +1,75 @@
1
+require 'spec_helper'
2
+
3
+describe WebRequestConcern do
4
+  before do
5
+    class WebRequestConcernTest < Agent
6
+      include WebRequestConcern
7
+    end
8
+  end
9
+
10
+  describe '#faraday' do
11
+    it 'should set up the User-Agent headers' do
12
+      web_request = WebRequestConcernTest.new()
13
+      faraday = web_request.faraday
14
+      expect(faraday.headers['User-Agent']).to eq(web_request.user_agent)
15
+    end
16
+
17
+    it 'should follow redirects' do
18
+      web_request = WebRequestConcernTest.new()
19
+      faraday = web_request.faraday
20
+      expect(faraday.builder.handlers).to include(FaradayMiddleware::FollowRedirects)
21
+    end
22
+  end
23
+
24
+  describe '#validate_web_request_options!' do
25
+    it 'should be valid with only default options' do
26
+      web_request = WebRequestConcernTest.new()
27
+      web_request.validate_web_request_options!
28
+      expect(web_request.errors[:base]).to be_empty
29
+    end
30
+
31
+    describe 'user_agent' do
32
+      it 'should be a string' do
33
+        web_request = WebRequestConcernTest.new(options: { user_agent: 'Huginn' } )
34
+        web_request.validate_web_request_options!
35
+        expect(web_request.errors[:base]).to be_empty
36
+      end
37
+
38
+      it 'should be invalid if not a string' do
39
+        web_request = WebRequestConcernTest.new(options: { user_agent: 42 } )
40
+        web_request.validate_web_request_options!
41
+        expect(web_request.errors[:base]).to_not be_empty
42
+      end
43
+    end
44
+
45
+    describe 'headers' do
46
+      it 'should be a hash' do
47
+        web_request = WebRequestConcernTest.new(options: { headers: {} } )
48
+        web_request.validate_web_request_options!
49
+        expect(web_request.errors[:base]).to be_empty
50
+      end
51
+
52
+      it 'should be invalid if not a hash' do
53
+        web_request = WebRequestConcernTest.new(options: { headers: 42 } )
54
+        web_request.validate_web_request_options!
55
+        expect(web_request.errors[:base]).to_not be_empty
56
+      end
57
+    end
58
+
59
+    describe 'basic_auth' do
60
+      it 'should be valid if basic_auth_credentials doesnt raise error' do
61
+        web_request = WebRequestConcernTest.new()
62
+        expect { web_request.basic_auth_credentials }.to_not raise_error
63
+        web_request.validate_web_request_options!
64
+        expect(web_request.errors[:base]).to be_empty
65
+      end
66
+
67
+      it 'should be invalid if basic_auth_credentials raises error' do
68
+        web_request = WebRequestConcernTest.new(options: { basic_auth: 'invalid' })
69
+        expect { web_request.basic_auth_credentials }.to raise_error(ArgumentError)
70
+        web_request.validate_web_request_options!
71
+        expect(web_request.errors[:base]).to_not be_empty
72
+      end
73
+    end
74
+  end
75
+end